Missing ranges¶
Time: O(N); Space: O(1); medium
Given a sorted integer array where the range of elements are [lower, upper] inclusive, return its missing ranges.
Example:
Input: nums = [0, 1, 3, 50, 75], lower = 0, upper = 99
Output: [“2”, “4->49”, “51->74”, “76->99”]
[8]:
class Solution1(object):
def findMissingRanges(self, nums, lower, upper):
"""
:type nums: List[int]
:type lower: int
:type upper: int
:rtype: List[str]
"""
def getRange(lower, upper):
if lower == upper:
return "{}".format(lower)
else:
return "{}->{}".format(lower, upper)
ranges = []
pre = lower - 1
for i in range(len(nums) + 1):
if i == len(nums):
cur = upper + 1
else:
cur = nums[i]
if cur - pre >= 2:
ranges.append(getRange(pre + 1, cur - 1))
pre = cur
return ranges
[9]:
s = Solution1()
nums = [0, 1, 3, 50, 75]
lower = 0
upper = 99
assert s.findMissingRanges(nums, lower, upper) == ['2', '4->49', '51->74', '76->99']